package IOAndProperties.IO;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

/*
     一次写入多个字节的方法
     void	write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。
     void	write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
*/
public class OutputStreamTest02 {
    public static void main(String[] args) throws IOException {
        byte[] bytes = {106, 97, 118, 97};
        //创建fileoutputstream对象，构造方法中传递文件所在路径

        FileOutputStream fos1 = new FileOutputStream(new File("/Users/ivy/Documents/java/mydir/iotest02.txt"));
        //调用FileOutputStream对象中的write方法，把数据写入文件中
        fos1.write(bytes);
        //释放资源
        fos1.close();
        FileOutputStream fos2 = new FileOutputStream(new File("/Users/ivy/Documents/java/mydir/iotest03.txt"));
        fos2.write(bytes, 1, 2);
        fos2.close();


        FileOutputStream fos3 = new FileOutputStream(new File("/Users/ivy/Documents/java/mydir/iotest04.txt"));
        //对于一次写入多个字节
        //如果写入的第一个字节是正数（0-127），则显示对应的ascii表中的字符
        //如果写入的第一个字节是负数，那么就会将第一个和第二个字节组成一个
        fos3.write(49);
        fos3.write(48);
        fos3.write(48);
        byte[] bytes1 = {65, 66, 67, 68, -65, -66, -67, 68};
        //100ABCD烤侥
        fos3.write(bytes1);
        fos3.close();


        //void	write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
        //将数组的一部分写入文件
        FileOutputStream fos4 = new FileOutputStream(new File("/Users/ivy/Documents/java/mydir/iotest05.txt"));
        byte[] byte3 = {65, 66, 67, -68, 69, 70, 71, 72, 73};
        fos4.write(byte3, 2, 3);
        //off为元素下标0，1，2，3...
        //len为写入长度

    /*
        将string字符串写入文件的方式：
        string中有一个方法 getBytes，可将string转换为字符数组
        byte [] getBytes()
    */
        byte[] bytes2 = "你好".getBytes();
        System.out.println(Arrays.toString(bytes2));
        //[-28, -67, -96, -27, -91, -67]为你好对应的utf-8编码
        fos4.write(bytes2);
        fos4.close();

    }
}
